今天要來Demo ArgoCD上透過Gitlab的SSO與權限控管
先創建一個namespace
kubectl create ns group1
然後在gitlab上的group再創建一個subgroup 創建這次demo使用的repo
創建後我們group的示意圖如下
點入我們的subgroup,這時候就要請出我們的分身一號gitlab帳號加入這個subgroup啦
回到外層的group點選application創建供dex server sso使用ClientID & ClientSecret,並設定CallBackURL
最後回到ArgoCD的UI,在上面多create一個repository&project,project名為group1
並將這個repo設定為demogroup1的application
接著調整昨天的values.yml 修改dex.config與policy.csv 重新佈署
configEnabled: true
config:
# Argo CD's externally facing base URL (optional). Required when configuring SSO
url: https://192.168.1.241
# Argo CD instance label key
application.instanceLabelKey: argocd.argoproj.io/instance
dex.config: |
connectors:
- type: gitlab
id: gitlab
name: gitlab
config:
baseURL: https://gitlab.com
clientID: xxx
clientSecret: xxx
## Annotations to be added to ArgoCD ConfigMap
configAnnotations: {}
## ArgoCD rbac config
## reference https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/rbac.md
rbacConfig:
policy.csv: |
p, role:group1role, applications, *, group1/*, allow
p, role:group1role, clusters, get, *, allow
p, role:group1role, repositories, get, *, allow
p, role:group1role, projects, get, *, allow
p, role:mainrole, applications, *, *, allow
p, role:mainrole, clusters, *, *, allow
p, role:mainrole, repositories, *, *, allow
p, role:mainrole, projects, *, *, allow
g, gurubear-ithome-13th/group1, role:group1role
g, gurubear-ithome-13th, role:mainrole
這邊設定的規則大概就是gurubear-ithome-13th/group1能對group1 project下的所有application做異動,針對clusters、repositories、projects全部僅能GET。gurubear-ithome-13th則是全部都可以。
執行helm更新佈署的動作
helm upgrade homelab-argo argo/argo-cd --version 3.17.6 -f values.yml -n argocd
可以看到介面上已經有LOG IN VIA GITLAB的按鈕了
分別使用分身與本尊登入,登入時需要同意授權
本尊帳號能看到全部的applications
分身帳號因為group的限制(下圖顯示該分身帳號底下只有這個gurubear-ithome-13th/group1),所以只能看到的group1的applications
透過這樣的方式就能去做一定的權限控管了。
今天這樣大概就把我想講的ArgoCD部分結束了,在實務上也都可以搭配CI/CD、argocd CLI來處理這一連串的pipeline,就是需要去設計一下而已~